package com.caesi.tacacaesifinal.model;

public class Jogo {

    private Long id;

    private Long idCampeonato;
    private Equipe equipe1;
    private Equipe equipe2;
    private int pontuacaoEquipe1 = 0;
    private int pontuacaoEquipe2 = 0;
    private String fase;
    

    public Jogo(Long idCampeonato, Equipe equipe1, Equipe equipe2,String fase) {
        this.equipe1 = equipe1;
        this.equipe2 = equipe2;
        this.idCampeonato = idCampeonato;
        this.fase = fase;
    }

    public void setIdCampeonato(Long idCampeonato) {
        this.idCampeonato = idCampeonato;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    /**
     * 
     * @return Equipe vencedora do jogo; Null em caso de empate.
     */
    public Equipe getVencedor() {
        if (pontuacaoEquipe1 > pontuacaoEquipe2) {
            return equipe1;
        } else if (pontuacaoEquipe1 < pontuacaoEquipe2) {
            return equipe2;
        }

        return null;
    }

    public int getPontuacaoEquipe1() {
        return pontuacaoEquipe1;
    }

    public void setPontuacaoEquipe1(int pontuacaoEquipe1) {
        this.pontuacaoEquipe1 = pontuacaoEquipe1;
    }

    public int getPontuacaoEquipe2() {
        return pontuacaoEquipe2;
    }

    public void setPontuacaoEquipe2(int pontuacaoEquipe2) {
        this.pontuacaoEquipe2 = pontuacaoEquipe2;
    }

    public Equipe getEquipe1() {
        return equipe1;
    }

    public void setEquipe1(Equipe equipe1) {
        this.equipe1 = equipe1;
    }

    public Equipe getEquipe2() {
        return equipe2;
    }

    public void setEquipe2(Equipe equipe2) {
        this.equipe2 = equipe2;
    }

    public Long getIdCampeonato() {
        // TODO Auto-generated method stub
        return this.idCampeonato;
    }
    
    

    public String getFase() {
		return fase;
	}

	public void setFase(String fase) {
		this.fase = fase;
	}

	@Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((equipe1 == null) ? 0 : equipe1.hashCode());
        result = prime * result + ((equipe2 == null) ? 0 : equipe2.hashCode());
        result = prime * result + ((id == null) ? 0 : id.hashCode());
        result = prime * result
                + ((idCampeonato == null) ? 0 : idCampeonato.hashCode());
        result = prime * result + pontuacaoEquipe1;
        result = prime * result + pontuacaoEquipe2;
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Jogo other = (Jogo) obj;
        if (equipe1 == null) {
            if (other.equipe1 != null)
                return false;
        } else if (!equipe1.equals(other.equipe1))
            return false;
        if (equipe2 == null) {
            if (other.equipe2 != null)
                return false;
        } else if (!equipe2.equals(other.equipe2))
            return false;
        if (id == null) {
            if (other.id != null)
                return false;
        } else if (!id.equals(other.id))
            return false;
        if (idCampeonato == null) {
            if (other.idCampeonato != null)
                return false;
        } else if (!idCampeonato.equals(other.idCampeonato))
            return false;
        if (pontuacaoEquipe1 != other.pontuacaoEquipe1)
            return false;
        if (pontuacaoEquipe2 != other.pontuacaoEquipe2)
            return false;
        return true;
    }
    
    

}